#ifndef  OOD_H
#define  OOD_H

void ood_test();

/* 
//----------------------------------------------------------------------

//member method


struct sub2_s {
    base_t * base_;
    double double_value_;
};

//subclass 
typedef struct sub2_t sub2_t;
//member method
void sub2_free(sub2_t * ptr);
int sub2_encrypted(base_t * ptr, char * src, char * dest);

void sub2_init(sub2_t * ptr, double double_value){
    ptr->double_value = double_value;
}
sub2_t * sub2_create(int value, double double_value){
    sub2_t * ret = malloc();
    basse_init(ret->base_, sub2_free, sub2_encrypted, value);
    sub2_init(ret, double_value);
    return ret;
}


typedef struct compose compose_t;
struct compose_s {
    cb_free_t free_;

    base_t * imp_;
};


void compose_free(compose_t * ptr);
void compose_init(compose_t * ptr){
    ptr->free_ = compose_free;
}

compose_t * compose_create(base_t * imp){
    compose_t * ret = malloc(); 
    compose_init(ret);
    ret->imp_ = imp;
    return ret;
}


int compose_get_base_value(){

}



void use(){

    base_t * base = base_create(100);
    sub1_t * sub1 = sub1_create(200, 1000);
    sub2_t * sub2 = sub2_create(300, 100.0001);

    compose_t * comp = compose_create(base);



    comp->free_(comp);
    base->free_(base);
}
*/


#endif   /* OOD_H */
